/**
 * 数据库初始化脚本
 * 创建学生信息表并插入示例数据
 */

const sqlite3 = require('sqlite3').verbose();
const path = require('path');
const config = require('../config/config');

function initDatabase() {
  console.log('正在初始化数据库...');

  const dbPath = path.resolve(__dirname, '../database/students.db');
  const db = new sqlite3.Database(dbPath, (err) => {
    if (err) {
      console.error('创建数据库连接失败:', err.message);
      return;
    }
    console.log('数据库连接成功');
  });

  // 创建学生表
  const createTableSQL = `
    CREATE TABLE IF NOT EXISTS students (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      name TEXT NOT NULL,
      age INTEGER NOT NULL,
      major TEXT NOT NULL,
      created_at DATETIME DEFAULT CURRENT_TIMESTAMP
    )
  `;

  db.run(createTableSQL, (err) => {
    if (err) {
      console.error('创建表失败:', err.message);
      return;
    }
    console.log('学生表创建成功');

    // 检查是否需要插入示例数据
    db.get('SELECT COUNT(*) as count FROM students', (err, row) => {
      if (err) {
        console.error('查询数据失败:', err.message);
        return;
      }

      if (row.count === 0) {
        console.log('插入示例数据...');
        const sampleData = [
          ['张三', 20, '计算机科学与技术'],
          ['李四', 21, '软件工程'],
          ['王五', 19, '人工智能'],
          ['赵六', 22, '计算机科学与技术'],
          ['钱七', 20, '数据科学与大数据技术']
        ];

        const insertSQL = 'INSERT INTO students (name, age, major) VALUES (?, ?, ?)';
        const stmt = db.prepare(insertSQL);

        sampleData.forEach(data => {
          stmt.run(data, (err) => {
            if (err) {
              console.error('插入数据失败:', err.message);
            }
          });
        });

        stmt.finalize((err) => {
          if (err) {
            console.error('完成插入失败:', err.message);
          } else {
            console.log('示例数据插入完成');
          }
        });
      } else {
        console.log(`数据库中已存在 ${row.count} 条记录`);
      }

      db.close((err) => {
        if (err) {
          console.error('关闭数据库失败:', err.message);
        } else {
          console.log('数据库初始化完成');
        }
      });
    });
  });
}

// 如果直接运行此脚本
if (require.main === module) {
  initDatabase();
}

module.exports = { initDatabase };